package org.cloud.im.core.listener;

import org.cloud.im.core.ImChannelContext;
import org.cloud.im.core.exception.ImException;
import org.cloud.im.core.packets.Group;
import org.cloud.im.core.packets.User;

/**
 * @Author: w.weidong.lin@abite.com
 * @Description: IM持久化绑定用户及群组监听器
 * @Date: create in 2021/10/19 15:05
 */
public interface ImStoreBindListener {
    /**
     * 绑定群组后持久化回调该方法
     *
     * @param imChannelContext 通道上下文
     * @param group            绑定群组信息
     * @throws Exception
     */
    void onAfterGroupBind(ImChannelContext imChannelContext, Group group) throws ImException;

    /**
     * 解绑群组后持久化回调该方法
     *
     * @param imChannelContext 通道上下文
     * @param group            解绑群组信息
     * @throws Exception
     */
    void onAfterGroupUnbind(ImChannelContext imChannelContext, Group group) throws ImException;

    /**
     * 绑定用户后持久化回调该方法
     *
     * @param imChannelContext 通道上下文
     * @param user             绑定用户信息
     * @throws Exception
     */
    void onAfterUserBind(ImChannelContext imChannelContext, User user) throws ImException;

    /**
     * 解绑用户后回调该方法
     *
     * @param imChannelContext 通道上下文
     * @param user             解绑用户信息
     * @throws Exception
     */
    void onAfterUserUnbind(ImChannelContext imChannelContext, User user) throws ImException;
}
